package JZ;


/**
 * @Classname JZ55
 * @Description // https://leetcode-cn.com/problems/ping-heng-er-cha-shu-lcof/ 树
 * @Date 2021/4/21 10:53
 * @Created by yin
 */
class TreeNode {
    int val;
    TreeNode left;
    TreeNode right;

    TreeNode(int x) {
        val = x;
    }
}

// 当节点root 左 / 右子树的深度差 \leq 1≤1 ：则返回当前子树的深度，即节点 root 的左 / 右子树的深度最大值 +1+1 （ max(left, right) + 1 ）；
//当节点root 左 / 右子树的深度差 > 2>2 ：则返回 -1−1 ，代表 此子树不是平衡树 。
public class JZ55II {
    public boolean isBalanced(TreeNode root) {
        if (root == null) return true;
        return dfs(root) != -1;
    }

    public int dfs(TreeNode node) {
        if (node == null) return 0;
        int left = dfs(node.left);
        int right = dfs(node.right);
        if(left == -1 || right == -1) return  -1;
        if (Math.abs(left - right) > 1) return -1;
        return Math.max(left,right)+1;
    }
}
